# -*- coding=utf-8 -*-
#第二版对第一版做出改进，更改文件命名机制
#使用时间作为文件名，存放在以当前日期为名字的文件夹中
#优点：分层存储，便于管理；文件名更短；只有当天进行备份才会创建文件夹，可快速检查某一天是否备份
import os
import time
# 需要备份的文件与目录将被指定在一个列表中
# 例如windows下

source = ['"J:\\PyWorkSpace\\byte-of-python"', 'D:\\C_Projects\\Cppstudy']
#注意必须咋说字符串中使用双引号，用以括起包含空格的名称(没有空格当然也可以使用，同时可以使用单引号)

#目的地址，备份文件存放的位置
target_dir = 'D:\\backup'

##############################################
#接下来是不同于第一版的
#如果主目录不存在就创建目录
if not os.path.exists(target_dir):
    os.mkdir(target_dir)
#将当前日期作为主备份目录下的子目录名称
today = target_dir + os.sep + time.strftime('%Y%m%d')
#将当前时间作为zip文件名
now = time.strftime('%H%M%S')
#zip文件名格式
target = today + os.sep + now + '.zip'

#如果子目录不存在则创建一个
if not os.path.exists(today):
    os.mkdir(today)
    print('Successfully created directory', today)

##############################################
# 接下来这部分与第一版相同
# 使用zip命令打包成zip格式
zip_command = 'zip -r {0} {1}'.format(target, ' '.join(source))

#运行备份
print('Zip command is:')
print(zip_command)
print('Running:')
if os.system(zip_command) == 0:
    print('Successful backup to', target)
else:
    print('Backup FAILED')